home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Die Speccy' 97
/
Die Speccy' 97.iso
/
amiga_system
/
the_aminet
/
comm
/
bbs
/
bbbbs85.lha
/
rexx
/
bbsUPDATE.rexx
< prev
next >
Wrap
OS/2 REXX Batch file
|
1994-12-12
|
4KB
|
189 lines
/* $VER: Update.rexx 8.3 (12.12.94) */
CALL TIME('R')
SAY
SAY SUBSTR(SOURCELINE(1),4)
SAY
SAY 'This macro updates the file libraries for ALL previous'
SAY 'versions of BBBBS to work with BBBBS version 8.0 and above.'
SAY 'It will abort before trying to update twice, so ''no worries''.'
SAY
SAY 'It will renumber the first 101 files by shuffling them into'
SAY 'blank spots in the filelist, or adding to the end if that is'
SAY 'necessary. It then saves the filelist and calls BuildALPHA.rexx.'
SAY
OPTIONS PROMPT 'Continue? (nY) > '
PULL junk
IF LEFT(junk,1)='N' THEN
DO
OPTIONS PROMPT 'Not renumbering is probably not a good idea, are you sure? (Ny) > '
PULL junk
IF LEFT(junk,1)='Y' THEN EXIT
END
figarg='s:CONFIG.BBS'
IF ~EXISTS(figarg) THEN figarg='BBS:BBS_TEXT/CONFIG.BBS'
IF readopen(figarg)=0 THEN
DO
SAY 's:CONFIG.BBS and BBS:BBS/CONFIG.BBS are both missing!'
EXIT
END
lynes.=''
DO i=1 TO 40
lynes.i=READLN(f)
END
CALL CLOSE(f)
compos=POS('/*',lynes.1)
IF compos>0 THEN lynes.1=LEFT(lynes.1,compos-1)
bbsname=STRIP(lynes.1)
sysop=WORD(lynes.2,1)
bbspath=WORD(lynes.6,1)
IF ~EXISTS(bbspath) THEN
DO
SAY bbspath 'does not exist!'
EXIT
END
testchar=RIGHT(bbspath,1)
IF testchar~='/' & testchar~=':' THEN bbspath=bbspath'/'
libpath=WORD(lynes.8,1)
IF ~EXISTS(libpath) THEN
DO
SAY libpath 'does not exist!'
EXIT
END
testchar=RIGHT(libpath,1)
IF testchar~='/' & testchar~=':' THEN libpath=libpath'/'
dirs.=''
IF readopen(bbspath'Lists/Libraries') THEN
DO
SAY 'Loading Library list...'
DO i=1
line=READLN(f)
IF line='END' | EOF(f) THEN LEAVE i
num=WORD(line,1)
IF DATATYPE(num,'W') THEN dirs.num=STRIP(WORD(line,2))
END
CALL CLOSE(f)
END
ELSE EXIT
file.=''
file.0=0
gottadoit=0
IF readopen(bbspath'Lists/Files') THEN
DO
SAY 'Loading Current Files list...'
DO i=1
line=READLN(f)
IF EOF(f) THEN LEAVE i
num=WORD(line,1)
IF DATATYPE(num,'W') THEN
DO
IF gottadoit=0 THEN
DO
IF num>100 THEN
DO
SAY 'This file system has already been updated for BBBBS 8.0'
SAY
EXIT
END
END
file.num=STRIP(WORD(line,2) WORD(line,3))
IF num>file.0 THEN file.0=num
IF num<100 THEN
IF LEFT(WORD(file.num,2),1)~='.' THEN gottadoit=1
END
END
CALL CLOSE(f)
END
ELSE EXIT
SAY
oldtop=file.0
SAY 'Renumbering files...'
lastfill=102
DO i=101 TO 1 BY -1
IF file.i='' THEN ITERATE i
DO j=lastfill WHILE file.j~=''
END
lastfill=j
IF i=1 THEN j=101
file.j=file.i
fnote=bbspath'FileNotes/'WORD(file.j,1)'/'WORD(file.j,2)
IF readopen(fnote) THEN
DO
lynes.=''
DO k=1
line=READLN(f)
IF EOF(f) THEN LEAVE k
lynes.k=line
END
CALL CLOSE(f)
lynes.0=k-1
lynes.1=OVERLAY(j,lynes.1,7,5)
CALL DELAY(28)
IF writeopen(fnote) THEN
DO
DO k=1 TO lynes.0
CALL WRITELN(f,lynes.k)
END
CALL CLOSE(f)
file.i=''
SAY 'Renumbered file' i 'to' j WORD(file.j,1)'/'WORD(file.j,2)
END
IF j>file.0 THEN file.0=j
END
END
SAY
IF file.0>oldtop THEN
DO
IF readopen(bbspath'Numbers/LastFile') THEN
DO
num=READLN(f)
CALL CLOSE(f)
CALL DELAY(50)
IF num<file.0 THEN
DO
SAY 'LastFile number reset to' file.0
IF writeopen(bbspath'Numbers/LastFile') THEN CALL WRITELN(f,file.0)
CALL CLOSE(f)
END
END
END
SAY
SAY 'Rebuilding all filelists...'
SAY
CALL BuildALPHA.rexx()
SAY
SAY 'The' bbsname 'file libraries'
SAY 'have been updated for use with BBBBS version 8.0 and above.'
SAY
EXIT
/* subroutines */
readopen:
PARSE ARG fname
ok=OPEN(f,fname,'R')
IF ok~=0 THEN RETURN 1
line=fname 'failed to open for reading!'
SAY line
RETURN 0
writeopen:
PARSE ARG fname
CALL CLOSE(f)
ok=OPEN(f,fname,'W')
IF ok~=0 THEN RETURN 1
line=fname 'failed to open for writing!'
SAY line
RETURN 0
/* UpdateBBBBS.rexx */